package com.example.springbootdemo2023.bus.account.controller;

import com.example.springbootdemo2023.core.annotations.MySysLog;
import com.example.springbootdemo2023.core.annotations.MySysLogOpration;
import com.example.springbootdemo2023.core.dto.MyResult;
import com.example.springbootdemo2023.core.util.MyRedisUtil;
import com.wf.captcha.GifCaptcha;
import com.wf.captcha.base.Captcha;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * 模块名称： 验证码管理
 * 模块类型： 控制器
 * 编码人：高靖博
 * 创建时间：2023/3/17
 * 联系电话：18587388612
 */
@RestController
@RequestMapping("/reqCode")
@Slf4j
@Api(tags = "验证码管理")
public class ReqCodeController {

    @Autowired
    private MyRedisUtil redisUtil;

    /**
     *
     * @param localID 描述一个唯一的客户端 ， 实现1个客户端对应一个验证码
     * @return
     */
    @GetMapping("/captcha")
    @ApiOperation("获取验证码")
    @MySysLog(modelName="验证码",methodDesc = "获取验证码",methodType = MySysLogOpration.GET)
    public MyResult getRegCode(String localID){
        log.info("--- 系统操作：获取验证码");

        MyResult result = new MyResult();
        //长，宽，位数
        GifCaptcha gifCaptcha = new GifCaptcha(100, 42, 5);
        //设置类型
        gifCaptcha.setCharType(Captcha.TYPE_NUM_AND_UPPER);
        //生成验证码
        String code = gifCaptcha.text();

        log.info("--- 验证码【"+code+"】----localID:"+localID);

        //在Redis中保存验证码
        redisUtil.set("regCode#"+localID,code);
        //redisUtil.expire("regCode#"+localID,60);// 验证码一分钟过期

        result.setMsg("验证码获取成功！");
        result.setData(gifCaptcha.toBase64());

        //int i = 1/0;



        return result;
    }

}
